import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

// 进行普通文件复制
public class IODemo13 {
    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要复制的文件 (绝对路径 或 相对路径): ");
        String sourcePath = scanner.next();

        // 创建 File 实例
        File sourceFile = new File(sourcePath);
        if (!sourceFile.exists()) {
            System.out.println("文件不存在, 请确认路径是否正确!");
            return;
        }
        if (!sourceFile.isFile()) {
            // 不是普通文件, 或者不存在
            System.out.println("文件不是普通文件, 请确认路径是否正确!");
            return;
        }

        System.out.print("请输入要复制的目标路径 (绝对路径 或 相对路径): ");
        String destPath = scanner.next();
        File destFile = new File(destPath);
        if (destFile.exists()) {
            // 目标存在
            if (destFile.isFile()) {
                System.out.println("目录路径已经存在, 是否要进行覆盖？y/n");
                String ans = scanner.next();
                if (!ans.toLowerCase().equals("y")) {
                    System.out.println("停止复制");
                    return;
                }
            } else {
                System.out.println("目标路径已存在, 并且不是普通文件, 请确认路径是否正确!");
            }
        }

        try (InputStream inputStream = new FileInputStream(sourceFile)) {
            try (OutputStream outputStream = new FileOutputStream(destFile)) {
                while (true) {
                    byte[] b = new byte[1024];
                    int len = inputStream.read(b);
                    if (len == -1) {
                        break;
                    }
                    outputStream.write(b, 0, len);
                    outputStream.flush();
                }
            }
        }
        System.out.println("复制已完成");
    }
}
